package com.glorystone.ins.vo;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.glorystone.ins.domain.Channel;
import com.glorystone.ins.domain.CustomLocalDateSerializer;
import com.glorystone.ins.domain.Member;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;

/**
 * @author liuhongjie
 */
public class ReceivableVO {

    private long tid; //逻辑ID

    private long ordId; //订单表tid

    private String orderNum; //保单编号

    private String insurer; //保险公司

    private String paySubject; //付款主体

    private String insuranceType; //险种

    private String channel; //渠道

    private String channelIds ;

    private String channelUser; //无用

    private String insurant; //被保险人

    private String policyHolder; //投保人

    private String insurantIdcard; //被保险人证件号

    private String plateNumber; //车牌号

    private String ownerName; //车主姓名

    private BigDecimal mercialPremium; //商业保险费

    private BigDecimal pulsoryPremium; //交强保险费

    private BigDecimal vehicleVesselTax; //车船税

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate orderDate; //下单日期

    private BigDecimal allPremium; //全保费

    private BigDecimal mustPremium; //应收保费

    private BigDecimal realPremium; //实收保费

    private BigDecimal mustPremiumAmt; //应收返点

    private BigDecimal realPremiumAmt; //实收返点

    private BigDecimal texPremium; //税后保费

    private BigDecimal checkPremium; //核对税后保费

    private String checkPremiumResult; //税后保费核对结果

    private BigDecimal followPoint; //跟单点位

    private BigDecimal followRpoundage; //跟单手续费

    private BigDecimal realFollowRpoundage; //实收跟单手续费

    private BigDecimal checkFollowPoint; //核对跟单点位

    private String checkFollowResult; //跟单点位核对结果

    private BigDecimal replenishPoint; //补点点位

    private BigDecimal replenishRpoundage; //补点手续费

    private BigDecimal realReplenishRpoundage; //实收补点手续费

    private BigDecimal checkReplenishPoint; //核对补点点位

    private String checkReplenishResult; //补点点位核对结果

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate insuranceDate; //起保日期

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate datePolicy; //保单生效日期

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate expireDate; //保单失效日期

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate accountMaturityDate; //渠道账期到期日

    private String followUser; //跟单员

    private String status; //状态

    private String opponent; //对手方

    private Integer checkResult; //核对结果

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate ticketOpenTime; //开票时间

    private Integer isTicketOpen; //是否开票

    private BigDecimal invoiceValue; //开票金额

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate receiptDate; //收款时间

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate checkDate; //核对时间

    private BigDecimal channelPoint; //渠道返点

    private BigDecimal channelRebate; //渠道返佣费

    private String remark; //备注/意见

    private Channel channelInfo; //渠道信息

    private Member member; //渠道联系人信息

    private Integer capitalSourcr; //资金来源

    private long channelId; //渠道ID

    private BigDecimal payInsurerAmt; //付保险公司金额

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate surrenderDate; //退保日期

    private String surrenderDateStr; //退保日期

    private String issuanceDateStart; //出单日期

    private String issuanceDateEnd; //出单日期

    private String accountMaturityDateStart; //渠道账期到期日

    private String accountMaturityDateEnd; //渠道账期到期日

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate payDate; //付款时间

    private long updateBy; //更新人

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate updateDate; //更新时间

    public long getTid() {
        return tid;
    }

    public void setTid(long tid) {
        this.tid = tid;
    }

    public long getOrdId() {
        return ordId;
    }

    public void setOrdId(long ordId) {
        this.ordId = ordId;
    }

    public String getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(String orderNum) {
        this.orderNum = orderNum;
    }

    public String getInsurer() {
        return insurer;
    }

    public void setInsurer(String insurer) {
        this.insurer = insurer;
    }

    public String getPaySubject() {
        return paySubject;
    }

    public void setPaySubject(String paySubject) {
        this.paySubject = paySubject;
    }

    public String getInsuranceType() {
        return insuranceType;
    }

    public void setInsuranceType(String insuranceType) {
        this.insuranceType = insuranceType;
    }

    public BigDecimal getMustPremium() {
        return mustPremium;
    }

    public void setMustPremium(BigDecimal mustPremium) {
        this.mustPremium = mustPremium;
    }

    public BigDecimal getRealPremium() {
        return realPremium;
    }

    public void setRealPremium(BigDecimal realPremium) {
        this.realPremium = realPremium;
    }

    public BigDecimal getTexPremium() {
        return texPremium;
    }

    public void setTexPremium(BigDecimal texPremium) {
        this.texPremium = texPremium;
    }

    public BigDecimal getCheckPremium() {
        return checkPremium;
    }

    public void setCheckPremium(BigDecimal checkPremium) {
        this.checkPremium = checkPremium;
    }

    public String getCheckPremiumResult() {
        return checkPremiumResult;
    }

    public void setCheckPremiumResult(String checkPremiumResult) {
        this.checkPremiumResult = checkPremiumResult;
    }

    public BigDecimal getFollowPoint() {
        return followPoint;
    }

    public void setFollowPoint(BigDecimal followPoint) {
        this.followPoint = followPoint;
    }

    public BigDecimal getFollowRpoundage() {
        return followRpoundage;
    }

    public void setFollowRpoundage(BigDecimal followRpoundage) {
        this.followRpoundage = followRpoundage;
    }

    public BigDecimal getCheckFollowPoint() {
        return checkFollowPoint;
    }

    public void setCheckFollowPoint(BigDecimal checkFollowPoint) {
        this.checkFollowPoint = checkFollowPoint;
    }

    public String getCheckFollowResult() {
        return checkFollowResult;
    }

    public void setCheckFollowResult(String checkFollowResult) {
        this.checkFollowResult = checkFollowResult;
    }

    public BigDecimal getReplenishPoint() {
        return replenishPoint;
    }

    public void setReplenishPoint(BigDecimal replenishPoint) {
        this.replenishPoint = replenishPoint;
    }

    public BigDecimal getReplenishRpoundage() {
        return replenishRpoundage;
    }

    public void setReplenishRpoundage(BigDecimal replenishRpoundage) {
        this.replenishRpoundage = replenishRpoundage;
    }

    public BigDecimal getCheckReplenishPoint() {
        return checkReplenishPoint;
    }

    public void setCheckReplenishPoint(BigDecimal checkReplenishPoint) {
        this.checkReplenishPoint = checkReplenishPoint;
    }

    public String getCheckReplenishResult() {
        return checkReplenishResult;
    }

    public void setCheckReplenishResult(String checkReplenishResult) {
        this.checkReplenishResult = checkReplenishResult;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getOpponent() {
        return opponent;
    }

    public void setOpponent(String opponent) {
        this.opponent = opponent;
    }

    public Integer getCheckResult() {
        return checkResult;
    }

    public void setCheckResult(Integer checkResult) {
        this.checkResult = checkResult;
    }

    public LocalDate getTicketOpenTime() {
        return ticketOpenTime;
    }

    public void setTicketOpenTime(LocalDate ticketOpenTime) {
        this.ticketOpenTime = ticketOpenTime;
    }

    public Integer getIsTicketOpen() {
        return isTicketOpen;
    }

    public void setIsTicketOpen(Integer isTicketOpen) {
        this.isTicketOpen = isTicketOpen;
    }

    public BigDecimal getInvoiceValue() {
        return invoiceValue;
    }

    public void setInvoiceValue(BigDecimal invoiceValue) {
        this.invoiceValue = invoiceValue;
    }

    public LocalDate getReceiptDate() {
        return receiptDate;
    }

    public void setReceiptDate(LocalDate receiptDate) {
        this.receiptDate = receiptDate;
    }

    public LocalDate getCheckDate() {
        return checkDate;
    }

    public void setCheckDate(LocalDate checkDate) {
        this.checkDate = checkDate;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getInsurant() {
        return insurant;
    }

    public void setInsurant(String insurant) {
        this.insurant = insurant;
    }

    public String getInsurantIdcard() {
        return insurantIdcard;
    }

    public void setInsurantIdcard(String insurantIdcard) {
        this.insurantIdcard = insurantIdcard;
    }

    public String getPolicyHolder() {
        return policyHolder;
    }

    public void setPolicyHolder(String policyHolder) {
        this.policyHolder = policyHolder;
    }

    public String getPlateNumber() {
        return plateNumber;
    }

    public void setPlateNumber(String plateNumber) {
        this.plateNumber = plateNumber;
    }

    public String getOwnerName() {
        return ownerName;
    }

    public void setOwnerName(String ownerName) {
        this.ownerName = ownerName;
    }

    public BigDecimal getMercialPremium() {
        return mercialPremium;
    }

    public void setMercialPremium(BigDecimal mercialPremium) {
        this.mercialPremium = mercialPremium;
    }

    public BigDecimal getPulsoryPremium() {
        return pulsoryPremium;
    }

    public void setPulsoryPremium(BigDecimal pulsoryPremium) {
        this.pulsoryPremium = pulsoryPremium;
    }

    public BigDecimal getVehicleVesselTax() {
        return vehicleVesselTax;
    }

    public void setVehicleVesselTax(BigDecimal vehicleVesselTax) {
        this.vehicleVesselTax = vehicleVesselTax;
    }

    public BigDecimal getAllPremium() {
        return allPremium;
    }

    public void setAllPremium(BigDecimal allPremium) {
        this.allPremium = allPremium;
    }

    public LocalDate getInsuranceDate() {
        return insuranceDate;
    }

    public void setInsuranceDate(LocalDate insuranceDate) {
        this.insuranceDate = insuranceDate;
    }

    public LocalDate getAccountMaturityDate() {
        return accountMaturityDate;
    }

    public void setAccountMaturityDate(LocalDate accountMaturityDate) {
        this.accountMaturityDate = accountMaturityDate;
    }

    public String getFollowUser() {
        return followUser;
    }

    public void setFollowUser(String followUser) {
        this.followUser = followUser;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getChannelUser() {
        return channelUser;
    }

    public void setChannelUser(String channelUser) {
        this.channelUser = channelUser;
    }

    public LocalDate getOrderDate() {
        return orderDate;
    }

    public void setOrderDate(LocalDate orderDate) {
        this.orderDate = orderDate;
    }

    public BigDecimal getChannelPoint() {
        return channelPoint;
    }

    public void setChannelPoint(BigDecimal channelPoint) {
        this.channelPoint = channelPoint;
    }

    public BigDecimal getChannelRebate() {
        return channelRebate;
    }

    public void setChannelRebate(BigDecimal channelRebate) {
        this.channelRebate = channelRebate;
    }

    public BigDecimal getMustPremiumAmt() {
        return mustPremiumAmt;
    }

    public void setMustPremiumAmt(BigDecimal mustPremiumAmt) {
        this.mustPremiumAmt = mustPremiumAmt;
    }

    public BigDecimal getRealPremiumAmt() {
        return realPremiumAmt;
    }

    public void setRealPremiumAmt(BigDecimal realPremiumAmt) {
        this.realPremiumAmt = realPremiumAmt;
    }

    public Channel getChannelInfo() {
        return channelInfo;
    }

    public void setChannelInfo(Channel channelInfo) {
        this.channelInfo = channelInfo;
    }

    public Integer getCapitalSourcr() {
        return capitalSourcr;
    }

    public void setCapitalSourcr(Integer capitalSourcr) {
        this.capitalSourcr = capitalSourcr;
    }

    public long getChannelId() {
        return channelId;
    }

    public void setChannelId(long channelId) {
        this.channelId = channelId;
    }

    public BigDecimal getPayInsurerAmt() {
        return payInsurerAmt;
    }

    public void setPayInsurerAmt(BigDecimal payInsurerAmt) {
        this.payInsurerAmt = payInsurerAmt;
    }

    public LocalDate getSurrenderDate() {
        return surrenderDate;
    }

    public void setSurrenderDate(LocalDate surrenderDate) {
        this.surrenderDate = surrenderDate;
    }

    public String getSurrenderDateStr() {
        return surrenderDateStr;
    }

    public void setSurrenderDateStr(String surrenderDateStr) {
        this.surrenderDateStr = surrenderDateStr;
    }

    public String getIssuanceDateStart() {
        return issuanceDateStart;
    }

    public void setIssuanceDateStart(String issuanceDateStart) {
        this.issuanceDateStart = issuanceDateStart;
    }

    public String getIssuanceDateEnd() {
        return issuanceDateEnd;
    }

    public void setIssuanceDateEnd(String issuanceDateEnd) {
        this.issuanceDateEnd = issuanceDateEnd;
    }

    public String getAccountMaturityDateStart() {
        return accountMaturityDateStart;
    }

    public void setAccountMaturityDateStart(String accountMaturityDateStart) {
        this.accountMaturityDateStart = accountMaturityDateStart;
    }

    public String getAccountMaturityDateEnd() {
        return accountMaturityDateEnd;
    }

    public void setAccountMaturityDateEnd(String accountMaturityDateEnd) {
        this.accountMaturityDateEnd = accountMaturityDateEnd;
    }

    public LocalDate getPayDate() {
        return payDate;
    }

    public void setPayDate(LocalDate payDate) {
        this.payDate = payDate;
    }

    public String getChannelIds() {
        return channelIds;
    }

    public void setChannelIds(String channelIds) {
        this.channelIds = channelIds;
    }

    public BigDecimal getRealFollowRpoundage() {
        return realFollowRpoundage;
    }

    public void setRealFollowRpoundage(BigDecimal realFollowRpoundage) {
        this.realFollowRpoundage = realFollowRpoundage;
    }

    public BigDecimal getRealReplenishRpoundage() {
        return realReplenishRpoundage;
    }

    public void setRealReplenishRpoundage(BigDecimal realReplenishRpoundage) {
        this.realReplenishRpoundage = realReplenishRpoundage;
    }

    public long getUpdateBy() {
        return updateBy;
    }

    public void setUpdateBy(long updateBy) {
        this.updateBy = updateBy;
    }

    public LocalDate getUpdateDate() {
        return updateDate;
    }

    public void setUpdateDate(LocalDate updateDate) {
        this.updateDate = updateDate;
    }

    public LocalDate getDatePolicy() {
        return datePolicy;
    }

    public void setDatePolicy(LocalDate datePolicy) {
        this.datePolicy = datePolicy;
    }

    public LocalDate getExpireDate() {
        return expireDate;
    }

    public void setExpireDate(LocalDate expireDate) {
        this.expireDate = expireDate;
    }

    public Member getMember() {
        return member;
    }

    public void setMember(Member member) {
        this.member = member;
    }
}